In today's computer networks, clients and servers are connected through a mesh of interconnected nodes. These nodes may include routers or switches, which forward data packets to neighboring nodes until the data packets reach their destinations.
Nodes may use different techniques for determining the neighboring nodes to which data is forwarded. One technique involves a node computing a complete or partial path through the network. The node may compute the path using an algorithm, such as Shortest Path First, and/or using external information, such as traffic engineering information or user configured information. Such a computation usually involves assigning costs to links and nodes in the network and computing the least cost path through the network.
In some cases, a node may compute more than one path. In such a case, one path is used as the primary path and the other(s) as backup(s). If, for whatever reason, the primary path becomes unusable (e.g., a link or node in the primary path malfunctions or becomes incapacitated), the node switches over to one of the backup paths. Having a precomputed backup path reduces the time needed to establish a new path.
The backup path(s) is useless, however, if it goes down at the same time and for the same reason as the primary path. This may happen when the primary and backup paths contain links or nodes that share common characteristics, attributes, or resources. For example, the primary path and backup path may contain lines that share the same trench. A cut in the primary path line is likely to cut the backup path line. Or, the primary path and backup path contain nodes that share the same power supply. If the power supply fails, neither path is usable.